﻿//注意该文件要先引入jquery后再引入

//修正日期控件显示json格式的bug
$.extend(
   $.fn.datagrid.defaults.editors, {
       datebox: {
           init: function(container, options) {
               var input = $('<input type="text">').appendTo(container);
               input.datebox(options);
               return input;
           },
           destroy: function(target) {
               $(target).datebox('destroy');
           },
           getValue: function(target) {
               var value = $(target).datebox('getValue');
               //alert(value);
               //if (value)
               //    return FormatDatebox(value);
               return value;
           },
           setValue: function(target, value) {
               $(target).datebox('setValue', FormatDatebox(value));
           },
           resize: function(target, width) {
               $(target).datebox('resize', width);
           }
       }
   });

$.extend($.fn.combobox.methods, {
    selectedIndex: function(jq, index) {
        if (!index)
            index = 0;
        //var data = $(jq).combobox('options').data;
        var data = $(jq).combobox('getData');
        var vf = $(jq).combobox('options').valueField;
        $(jq).combobox('setValue', eval('data[index].' + vf));
    }
}); //使用方法：$('#comboboxID').combobox('selectedIndex',0) //选中第一个

$.extend(
 {
     /**
     * @see  将json字符串转换为对象
     * @param   json字符串
     * @return 返回object,array,string等对象
     */
     evalJSON: function(strJson) {
         return eval("(" + strJson + ")");
     }
 });
 
 $.extend(
 {
     /**
     * @see  将javascript数据类型转换为json字符串
     * @param 待转换对象,支持object,array,string,function,number,boolean,regexp
     * @return 返回json字符串
     */
     toJSON: function(object) {
         var type = typeof object;
         if ('object' == type) {
             if (Array == object.constructor)
                 type = 'array';
             else if (RegExp == object.constructor)
                 type = 'regexp';
             else
                 type = 'object';
         }
         switch (type) {
             case 'undefined':
             case 'unknown':
                 return;
                 break;
             case 'function':
             case 'boolean':
             case 'regexp':
                 return object.toString();
                 break;
             case 'number':
                 return isFinite(object) ? object.toString() : 'null';
                 break;
             case 'string':
                 return '"' + object.replace(/(\\|\")/g, "\\$1").replace(/\n|\r|\t/g,
       function() {
           var a = arguments[0];
           return (a == '\n') ? '\\n' :
                       (a == '\r') ? '\\r' :
                       (a == '\t') ? '\\t' : ""
       }) + '"';
                 break;
             case 'object':
                 if (object === null) return 'null';
                 var results = [];
                 for (var property in object) {
                     var value = jQuery.toJSON(object[property]);
                     if (value !== undefined)
                         results.push(jQuery.toJSON(property) + ':' + value);
                 }
                 return '{' + results.join(',') + '}';
                 break;
             case 'array':
                 var results = [];
                 for (var i = 0; i < object.length; i++) {
                     var value = jQuery.toJSON(object[i]);
                     if (value !== undefined) results.push(value);
                 }
                 return '[' + results.join(',') + ']';
                 break;
         }
     }
 });

function FormatDatebox(value) {
    if (value == null || value == '') {
        return '';
    }
    var dt;
    if (value instanceof Date) {
        dt = value;
    }
    else {
        dt = new Date(value);
        //alert(dt);
        if (isNaN(dt)) {
            var value1 = value.replace(/\/Date\((-?\d+)\)\//, '$1'); //标红的这段是关键代码，将那个长字符串的日期值转换成正常的JS日期格式
            //var value2 = ParseDatebox(value); //修正Date.parse不兼容IE问题
            //dt = new Date();
            //dt.setTime(value2);
            dt = new Date(parseInt(value1)); //注意要先转换为int类型
        }
    }

    return dt.format("yyyy-MM-dd");  //这里用到一个javascript的Date类型的拓展方法，这个是自己添加的拓展方法，在后面的步骤3定义
}

/**
* 解析输入的dateStr，返回Date类型。修正Date.parse不兼容IE问题
* dateStr: XXXX-XX-XX
*/
function ParseDatebox(dateStr) {
    var strArray = dateStr.split("-");
    if (strArray.length == 3) {
        return new Date(strArray[0], strArray[1], strArray[2]);
    } else {
        return new Date();
    }
}